package com.microservice.user.service;

import com.microservice.api.common.PageResult;
import com.microservice.api.user.dto.UserInfoDTO;
import com.microservice.api.user.dto.UserProfileUpdateDTO;
import com.microservice.api.user.dto.UserRegisterDTO;
import com.microservice.api.user.dto.UserUpdateDTO;
import com.microservice.user.entity.User;

/**
 * 用户服务接口
 */
public interface UserService {
    
    /**
     * 用户注册
     */
    UserInfoDTO register(UserRegisterDTO registerDTO);
    
    /**
     * 根据用户名查询用户
     */
    User getUserByUsername(String username);
    
    /**
     * 根据用户ID查询用户信息
     */
    UserInfoDTO getUserInfo(Long userId);
    
    /**
     * 检查用户名是否存在
     */
    boolean existsByUsername(String username);
    
    /**
     * 检查邮箱是否存在
     */
    boolean existsByEmail(String email);
    
    /**
     * 检查手机号是否存在
     */
    boolean existsByPhone(String phone);
    
    /**
     * 分页查询用户列表
     */
    PageResult<UserInfoDTO> pageUsers(int current, int size, String username, Integer status);
    
    /**
     * 修改用户信息（管理员）
     */
    UserInfoDTO updateUser(UserUpdateDTO updateDTO);
    
    /**
     * 修改个人信息（普通用户）
     */
    UserInfoDTO updateProfile(Long userId, UserProfileUpdateDTO profileUpdateDTO);
    
    /**
     * 获取用户角色列表
     */
    java.util.Set<String> getUserRoles(Long userId);
    
    /**
     * 获取用户权限列表
     */
    java.util.Set<String> getUserPermissions(Long userId);
}
